package org.mii.safeguard_v1.util.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.mii.safeguard_v1.Constants;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/**
 * URL拦截器 只有一个实例，非线程安全！！
 * 
 * @author QUANXIWEI
 * 
 */
public class UrlInterceptor implements Interceptor {

	String syncObj;
	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1117724412575608111L;

	public void destroy() {
		syncObj = null;
	}

	public void init() {
		syncObj = "syncObj";
	}

	public String intercept(ActionInvocation ai) throws Exception {
		// 我需要保证线程安全，必须做同步处理。
		// 此外，所有获取的值，应该放入session中，session是每个人都不同的
		// 同一个人不会有多个请求，如果发生，我用权限干掉，只留一个session，让他牛逼
		synchronized (syncObj) {
			HttpServletRequest request = ServletActionContext.getRequest();
			HttpSession session = request.getSession();
			session.setAttribute(Constants.PRE_URL, request.getRequestURI());
			System.out.println(request.getRequestURI());
			System.out.println(request.getParameter("id"));

			// 让拦截器继续往后执行
			return ai.invoke();
		}
	}

}
